package cn.lzm.registry;

import cn.lzm.model.ServiceMetaInfo;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author lzm
 * @Date 2024/10/5
 * @description 注册中心本地缓存
 */
public class RegistryServiceCache {

    /**
     * 服务器节点列表
     */
    Map<String, List<ServiceMetaInfo>> serviceCache = new HashMap<>();

    /**
     * 写缓存
     *
     * @param service 服务名 controller接口的类名 + version
     * @param newServiceCache 缓存的服务节点列表
     */
    void writeCache(String service, List<ServiceMetaInfo> newServiceCache) {
        this.serviceCache.put(service, newServiceCache);
    }

    /**
     * 读缓存
     *
     * @param service 服务名 controller接口的类名 + version
     * @return 缓存
     */
    List<ServiceMetaInfo> readCache(String service) {
        return this.serviceCache.get(service);
    }

    /**
     * 清空缓存
     * @param serviceNodeKey 服务节点名 controller接口的类名 + version
     */
    void clearCache(String serviceNodeKey) {
        this.serviceCache.keySet().removeIf(serviceNodeKey::contains);
    }

}
